home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #094 (1990-10)(Amiga User Group Deutschland e.V.).zip
/
Franz PD Disk #094 (1990-10)(Amiga User Group Deutschland e.V.).adf
/
Demos
/
WBArgs.asm
< prev
next >
Wrap
Assembly Source File
|
1990-09-11
|
5KB
|
186 lines
* WBArgumente by E.Hambuch DEMO
* Darf nicht veraendert werden !
* Nur zum Demonstrieren
* Informationen aus AMIGA 12/89
include 'exec.i'
include 'dos.i'
include 'icon.i'
include 'startup.i'
_main:
lea dosname,a1 ;Dos-Library oeffnen
CALLEXEC OldOpenLibrary
move.l d0,_DOSBase
beq ende
tst.l _WBenchMsg ;Von WB gestartet
bne.s startwb ;->JA
CALLDOS Output ;von CLI
move.l d0,Out
beq closedos
lea clitext,a0
bsr print
bra closedos
startwb:
lea iconname,a1 ;Icon-Library oeffnen
jsr _LVOOldOpenLibrary(a6)
move.l d0,_IconBase
beq closedos
move.l #window,d1 ;Fenster oeffnen
move.l #MODE_NEWFILE,d2
CALLDOS Open
move.l d0,Out
beq closeicon
move.l _WBenchMsg,a0
move.l $1c(a0),NumArgs ;WBStartup.NumArgs ;Anzahl der Argumente
move.l $24(a0),ArgList ;WBStartup.ArgList ;Zeiger auf ArgumListe
move.l NumArgs,d0 ;Zahl der Arg. ausgeben
lea text1+21,a0
bsr dez
lea text1,a0
bsr print
moveq #0,d7
argloop: ;Argumente einzeln ausgeben
move.l ArgList,a0
move.w d7,d0
lsl.w #3,d0
move.l 4(a0,d0.w),a2 ;WBArguments->WBArg[Num].Name
move.l 0(a0,d0.w),d4 .Lock
tst.b (a2) ;String = $00
bne.s arg1
lea drawertxt,a0 ;Ja -> Drawer
bsr print
bra argl
arg1: ;ArgName ausgeben
lea argtxt,a0
bsr print
move.l a2,a0
bsr print
lea rt,a0
bsr print
move.l d4,d1 ;aktuelles Directory setzen
jsr _LVOCurrentDir(a6)
move.l d0,oldlock
move.l a2,a0
CALLICON GetDiskObject ;DiskObject holen
move.l _DOSBase,a6
move.l d0,diskobj
beq closeout
move.l d0,a4
move.b 48(a4),d0 ;DiskObject.Type
cmp.b #4,d0 ;PROJECT
bne noproj
move.l 50(a4),a0 ;DiskObject.DefaultTool
cmp.l #0,a0 ;kein Defaulttool ?
beq.s nodeft ;Keins
tst.b (a0) ;kein DefTool ?
beq.s nodeft ;Keins
move.l a0,a2
lea defttxt,a0 ;DefTool vorhanden -> ausgeben
bsr print
move.l a2,a0
bsr print
lea rt,a0
bsr print
nodeft:
noproj:
move.l diskobj,a0
move.l 54(a0),a4 ;DiskObject.ToolType
cmp.l #0,a4
beq nottype ;kein ToolType
lea toolttxt,a0
bsr print
move.l (a4),a0 ;erster Zeiger auf ToolType
addq.l #4,a4
ttloop: move.l a0,a2
lea spacetxt,a0
bsr print
move.l a2,a0
bsr print
lea rt,a0
bsr print
move.l (a4)+,a0 ;naester Zeiger auf String
cmp.l #0,a0
bne ttloop ;keine ToolTypes mehr ?
move.l diskobj,a0
move.l 54(a0),a0 ;DiskObject.ToolTypes
lea ToolType,a1
CALLICON FindToolType ;ist dieser String (ToolType) darin enthalten
move.l d0,d5
beq.s notvorh ;0 -> Nein
move.l d5,a0
lea ToolTypeInh,a1
jsr _LVOMatchToolValue(a6) ;Vergleichen
tst.l d0
beq.s notvorh ;nicht vorhanden
lea VorhandenTxt,a0
bsr print
bra.s nottype
notvorh:
lea NichtVorTxt,a0
bsr print
nottype:
move.l diskobj,a0
CALLICON FreeDiskObject ;DiskObj freigeben
move.l oldlock,d1
CALLDOS CurrentDir
move.l d0,oldlock
argl:
addq.l #1,d7
cmp.l NumArgs,d7 ;schon fertig ?
bne argloop
closeout: ;auf Return warten
move.l Out,d1
move.l #dosname,d2
moveq #2,d3
CALLDOS Read
move.l Out,d1 ;alles schliessen
jsr _LVOClose(a6)
closeicon:
move.l _IconBase,a1
CALLEXEC CloseLibrary
closedos:
move.l _DOSBase,a1
CALLEXEC CloseLibrary
ende: rts
print: ;Text ausgeben
move.l a0,a1
l00: tst.b (a1)+
bne.s l00
suba.l a0,a1
move.l Out,d1
move.l a0,d2
move.l a1,d3
subq.l #1,d3
move.l _DOSBase,a6
jmp _LVOWrite(a6)
dez: ;Byte-Zahl in String
divu #10,d0
add.b #'0',d0
move.b d0,(a0)+
swap d0
add.b #'0',d0
move.b d0,(a0)
rts
dosname: DOSNAME
iconname: ICONNAME
_DOSBase: dc.l 0
_IconBase: dc.l 0
Out: dc.l 0
NumArgs: dc.l 0
ArgList: dc.l 0
oldlock: dc.l 0
diskobj: dc.l 0
clitext: dc.b 'Bitte von Workbench starten !',10,0
window: dc.b 'CON:0/0/640/256/WBArguments-Demo Written by E.Hambuch',0
text1: dc.b 'Anzahl der Argumente: ',10,0
drawertxt: dc.b 'Bitte keine Drawer,Garbage oder Disks',10,0
rt: dc.b 10,0
argtxt: dc.b 'Argument: ',0
defttxt: dc.b ' DefaultTool = ',0
toolttxt: dc.b ' ToolTypes = ',10,0
spacetxt: dc.b ' ',0
ToolType: dc.b 'TOOLTYPE',0
ToolTypeInh: dc.b 'DUMMY',0
VorhandenTxt: dc.b ' Parameter "DUMMY" ist vorhanden !',10,0
NichtVorTxt: dc.b ' Parameter "DUMMY" nicht vorhanden !',10,0
end